Development of new software architecture and applications programs for program controlled telecommunications systems has historically been a complex and time-consuming task. Current software for a large telecommunications network may contain millions of lines of code. Developing new software requires not only developing functional specifications defining the operation and interaction of new software code (new services, enhancements, modifications, etc.) with existing code, but also the testing of the new code with existing code to ensure compatibility. Such a process may take a significant amount of time, thus delaying the operation of new services and software into the marketplace. Thus, developing new software systems and applications is a very expensive and time-consuming process.
Accordingly, there exists a need for a software architecture in a telecommunications system that allows use, and re-use, of modular software components allowing them to be integrated quickly into the existing software. In addition, there is a need for a software architecture useful in a complex telecommunications environment wherein many separate tasks within a particular call may be most appropriately performed concurrently and without explicit prior knowledge of one another. Such an architecture should provide an interpreted and dynamic environment in which not only data definitions are configurable at run-time and modifiable during run-time, but so is the activation, functionality and interaction of state machines.